﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace BLL
{
    public class bllContas
    {
        #region Conexão e Variáveis privadas
        Love_Dados.Dados dados = new Love_Dados.Dados();
        Contas _objContas;
        #endregion

        #region Construtores
        public bllContas()
        {
        }
        public bllContas(int pCta_Id_Conta)
        {
            DataTable dt = GetDados(pCta_Id_Conta, 0);
            if (dt.Rows.Count > 0)
            {
                objContas.Cta_Id_Conta = Convert.ToInt32(dt.Rows[0]["cta_Id_Conta"].ToString());
                objContas.Cta_tx_NomeConta = dt.Rows[0]["cta_tx_NomeConta"].ToString();
                objContas.Cta_tx_TipoConta = dt.Rows[0]["cta_tx_TipoConta"].ToString();
                objContas.Cta_tx_CodBanco = dt.Rows[0]["cta_tx_CodBanco"].ToString();
                objContas.Cta_tx_CodAgencia = dt.Rows[0]["cta_tx_CodAgencia"].ToString();
                objContas.Cta_tx_NumeroConta = dt.Rows[0]["cta_tx_NumeroConta"].ToString();
                objContas.Agr_Id_AplGroup = Convert.ToInt32(dt.Rows[0]["agr_Id_AplGroup"].ToString());
            }
        }
        #endregion

        #region Propriedade - Modelo do Objeto
        public Contas objContas
        {
            get
            {
                if (_objContas == null)
                    _objContas = new Contas();
                return _objContas;
            }
        }
        #endregion

        #region Gravação, Exclusão e Lista
        public int SetContas()
        {
            if (objContas.Cta_Id_Conta == 0)
                objContas.Cta_Id_Conta = dados.ExecutaInsert
                                         (
                                           "spcManContas",
                                           objContas.Cta_Id_Conta,
                                           objContas.Cta_tx_NomeConta,
                                           objContas.Cta_tx_TipoConta,
                                           objContas.Cta_tx_CodBanco,
                                           objContas.Cta_tx_CodAgencia,
                                           objContas.Cta_tx_NumeroConta,
                                           objContas.Agr_Id_AplGroup
                                         );
            else
                dados.ExecutaUpdate
                (
                  "spcManContas",
                  objContas.Cta_Id_Conta,
                  objContas.Cta_tx_NomeConta,
                  objContas.Cta_tx_TipoConta,
                  objContas.Cta_tx_CodBanco,
                  objContas.Cta_tx_CodAgencia,
                  objContas.Cta_tx_NumeroConta,
                  objContas.Agr_Id_AplGroup
                );
            return objContas.Cta_Id_Conta;
        }
        public void DelContas(int pCta_Id_Conta)
        {
            dados.ExecutaDelete("spcDelContas", pCta_Id_Conta);
        }
        public DataTable GetDados(int pCta_Id_Conta, int pAgr_Id_AplGroup)
        {
            return dados.ExecutaSelect
                   (
                     "spcGetContas", 
                     pCta_Id_Conta,
                     pAgr_Id_AplGroup
                   ).Tables[0];
        }
        #endregion
    }

    public class Contas
    {
        public int Cta_Id_Conta { get; set; }
        public string Cta_tx_NomeConta { get; set; }
        public string Cta_tx_TipoConta { get; set; }
        public string Cta_tx_CodBanco { get; set; }
        public string Cta_tx_CodAgencia { get; set; }
        public string Cta_tx_NumeroConta { get; set; }
        public int Agr_Id_AplGroup { get; set; }
    }
}
